package com.xuan.controller;

import com.xuan.common.util.PageResult;
import com.xuan.common.util.R;
import com.xuan.entity.Paper;
import com.xuan.service.IPaperService;
import com.xuan.valueobject.ValueObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xuan
 * @since 2025-01-12
 */
@RestController
@RequestMapping("/paper")
public class PaperController {
    @Autowired
    private IPaperService paperService;
    //这里是论文列表
    @RequestMapping("/FindList")
    public R getPaper() {
        return R.ok().data("list",paperService.list());
    }

    // 这一部分是分页查询
    //传参和vue里面一直可以少写一点配置
    @GetMapping("/findByPage/{page}/{pageSize}")
    //PathVariable这个注解从URL中获取值，从请求的URL中提取特定的部分作为变量，
    // 提取的值可以直接绑定到控制器方法中的参数上，无需手动解析URL，可以简化代码编写。
    public R findByPage(@PathVariable("page") Integer page,
                        @PathVariable("pageSize") Integer pageSize) {
        PageResult<Paper> h = paperService.findByPage(page,pageSize);
        return R.ok().data("h",h);
    }


    //带条件的分页查询
    @PostMapping("/find/{page}/{pageSize}")
    public R find(@PathVariable("page") Integer page,
                    @PathVariable("pageSize") Integer pageSize,
                    @RequestBody(required = false) ValueObject vo) {
        PageResult<Paper> h = paperService.find(page, pageSize, vo);
        return R.ok().data("h", h);

    }

    // 新增论文
    @PostMapping("/add")
    public R add(@RequestBody Paper paper){
        boolean flag = paperService.add(paper);
        if (flag) {
            return R.ok().message("已成功新增论文!");
        } else {
            return R.error().message("新增论文未完成!");
        }
    }
    //更新论文
    @PutMapping("/update")
    public R update(@RequestBody Paper paper){
        boolean flag = paperService.updateById(paper);
        if (flag) {
            return R.ok().message("已成功修改论文!");
        } else {
            return R.error().message("修改论文未完成!");
        }
    }


    // 删除论文
    @DeleteMapping("/delete/{ids}")
    public R delete(@PathVariable("ids") String ids){
        String[] split = ids.split(",");
        List<String> sids = Arrays.asList(split);
        if (paperService.removeByIds(sids)) {
            return R.ok().message("成功删除所选论文!");
        } else {
            return R.error().message("删除好像出了点问题呢!");
        }
    }
}
